
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>JVM调优 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>JVM调优 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">原则</div>
          <div class="card-question">文档中提到的JVM性能优化应遵循的四个基本原则是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">原则</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">JVM性能优化的四个基本原则是：1. 减少内存占用；2. 提高代码执行效率；3. 优化垃圾回收性能；4. 并发优化。</div>
          </div>
          <div class="card-source">来源: 性能优化原则</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">JIT编译器是如何提高代码执行效率的？开发者可以通过哪些手段来增强其优化效果？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">JIT编译器在运行时会将热点代码（HotSpot）编译成本地机器码，从而提高代码执行效率。开发者可以通过方法内联和循环优化等手段来提高JIT编译器的优化效果。</div>
          </div>
          <div class="card-source">来源: 性能优化原则 - 提高代码执行效率</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">策略</div>
          <div class="card-question">在垃圾回收优化中，针对“新生代”有哪些具体的优化方法？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">策略</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">针对新生代的优化方法包括：增大新生代空间以容纳更多新对象来减少Minor GC的频率；调整Eden区和Survivor区的比例以合理分配内存；以及使用对象复用或对象池技术来减少新对象的频繁创建。</div>
          </div>
          <div class="card-source">来源: 垃圾回收优化 - 新生代优化</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">策略</div>
          <div class="card-question">对于HotSpot JVM，文档在“永久代优化”方面给出的核心建议是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">策略</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">核心建议是使用元数据区（Metaspace）替代永久代，因为永久代的大小有限，容易发生内存溢出问题。</div>
          </div>
          <div class="card-source">来源: 垃圾回收优化 - 永久代优化</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在代码优化层面，什么是“方法内联”（Method Inlining）技术？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">方法内联是JIT编译器的一种优化技术，它将方法调用直接替换为方法体的内容，目的是减少方法调用的开销。</div>
          </div>
          <div class="card-source">来源: 代码优化 - 方法内联（Method Inlining）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">为减少内存占用，文档建议如何优化对象的创建与生命周期管理？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">优化方法包括：1. 使用对象池或缓存来重用对象，减少频繁创建和销毁；2. 及时释放不再需要的对象引用，并可使用弱引用、软引用或虚引用来管理对象生命周期，避免内存长时间被占用。</div>
          </div>
          <div class="card-source">来源: 内存优化 - 优化对象的创建和销毁 / 优化对象生命周期</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">策略</div>
          <div class="card-question">在并发优化中，文档提出了哪三种具体策略来减少锁竞争？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">策略</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">减少锁竞争的三种策略是：1. 使用细粒度锁，减少锁的粒度以降低竞争概率；2. 减少锁持有时间，避免在锁范围内执行耗时操作；3. 锁分离，将共享资源的访问拆分为多个独立的锁。</div>
          </div>
          <div class="card-source">来源: 并发优化 - 细粒度锁 / 减少锁持有时间 / 锁分离</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">工具</div>
          <div class="card-question">jstack工具在JVM性能调优中的主要作用是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">工具</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">jstack是Java虚拟机堆栈跟踪工具，主要作用是输出应用程序中各个线程的堆栈信息，帮助开发人员分析线程情况，识别死锁和线程阻塞等问题。</div>
          </div>
          <div class="card-source">来源: 工具和调试 - jstack</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">工具</div>
          <div class="card-question">JVisualVM作为一款性能分析工具，它提供了哪些核心监控功能？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">工具</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">JVisualVM可以监控Java应用程序的运行状态、内存使用情况、线程信息等。它允许开发人员对应用程序进行实时监控，并使用其内置的线程和内存分析工具来识别性能瓶颈。</div>
          </div>
          <div class="card-source">来源: 工具和调试 - JVisualVM</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
